Internet of things, Internet de las cosas o Internet de los objetos es un concepto surgido en 1999.
Podríamos decir que un sistema enmarcado en internet de las cosas es aquel que utiliza objetos físicos, con una parte digital y objetos que se comunican con otros sistemas u objetos de forma autónoma. Para realizar esta comunicación utilizan internet u otros protocolos (RFID, Bluetooth, etc).
Los objetos y su funcionalidad pueden ser de lo más variado (sensores, electrodomésticos, vehículos...), pudiendo ser técnicamente muy simples o muy complejos.
Los objetos interactúan mediante servicios, siendo estos las cosas que el objeto puede hacer, acciones o habilidades asociadas al objeto.
Estos servicios, al igual que los objetos, son de una complejidad variable.
Otra de las ideas clave de IoT es que la comunicación entre objetos es autónoma.
Cada objeto posee dos partes:
Parte física digital (electrónica).
Parte lógica (los servicios o acciones asociadas a él).
Los objetos tienen diferentes niveles de inteligencia. Un objeto muy inteligente es capaz de realizar muchas tareas: consume servicios de otros objetos, toma decisiones, es capaz de auto administrarse, etc.
La inteligencia de un objeto se puede dividir en tres categorías:
Manejo de información: simplemente son sensores que devuelven su estado cuando se les consulta.

Notificación: se trata de un objeto capaz de notificar situaciones o cambios a otros dispositivos o personas. El objeto no controla su actividad, pero si es capaz de tomar la iniciativa en una comunicación e informar ante determinadas situaciones.

Toma de decisiones: supone un mayor nivel de inteligencia. El objeto es capaz de auto administrarse, ejecutar lógica de negocio y tomar de decisiones. Estas decisiones le permiten controlar su funcionalidad de forma total o parcial.
La inteligencia del sistema se puede localizar en un solo objeto o en el conjunto de objetos que forman la red.

Existen infinidad de dispositivos IoT que se pueden adquirir y disfrutar en distintos entornos. Muchos fabricantes se han centrado en crear familias completas de soluciones centradas en el hogar, con sensores y actuadores de todo tipo:
Sensores de seguridad.
Sensores/actuadores de confort.
También podemos diseñar nuestras propias soluciones con alternativas como Arduino, Raspberry Pi, Intel Edison, Beaglebone, etc.
El gran interés que han despertado estos dispositivos, y la filosofía DIY (Do It Yourself, hazlo tú mismo), ha propiciado una industria de fabricación de todo tipo de sensores y complementos.

Por otra parte, suele ser necesario disponer de un Backend para la recogida de datos de los sensores y su procesamiento, o comunicación con terceros dispositivos.
Esto se ha simplificado con multitud de plataformas completas disponibles en el mercado, con capacidades que van más allá de la simple recogida de datos.
Estas plataformas pueden ser:
Propietarias: SmartThings.
Abiertas: ThingSpeak.
Habitualmente estas plataformas ofrecen una API para conectarse a ellas y utilizar sus servicios, permitiendo que la creación de dispositivos sea relativamente sencilla.

Por la propia naturaleza de los dispositivos IoT, que se pueden emplazar en exteriores e interiores, se necesitan comunicaciones WWAN, normalmente propiciadas con redes de telefonía móvil 2.5G, 3G o 4G.

Muchos de estos dispositivos están operados por baterías, siendo necesario desarrollar tecnologías LPWAN (Low Power WAN), con un consumo muy reducido y mucha mayor cobertura que las tecnologías móviles tradicionales.
Existen dos grandes grupos de tecnologías LPWAN hoy día:
Estándar: LTE-M y NB-IoT (variantes de LTE).
Propietarias: Sigfox y LoRa.
Dadas las diferencias de velocidad entre NB-IoT y LTE-M (más elevadas para este último), normalmente se consideran distintos casos de uso para las mismas.
LTE-M es utilizada cuando precisamos de velocidades altas mientras que NB-IoT se utiliza cuando se precisa gran cantidad de dispositivos conectados.

El cloud computing nos ofrece múltiples ventajas en términos de flexibilidad, escalabilidad, seguridad, acceso simultáneo, etc.
Sin embargo, este modelo suele tener el hándicap de tiempos de latencia elevados. En términos generales, la tecnología IoT está generando enormes volúmenes de datos, y cuando llegan a la nube para ser sometidos a análisis, suele ser tarde para actuar.
Es por ello que están apareciendo arquitecturas complementarias a la computación en la nube, orientadas a reducir los elevados tiempos de latencia:
La arquitectura Edge Computing se basa en traer el procesamiento cerca de la fuente de datos, por lo que no es necesario enviarlos a una nube para procesarlos. Esto permite mejorar enormemente la velocidad y el rendimiento.
Esta arquitectura es muy adecuada para dispositivos IoT con conectividad pobre.
Al reducir las capas, se reducen congestiones.
Ejemplos:
Vehículos autónomos: los sensores necesitan gran velocidad de reacción para reaccionar ante determinadas situaciones.
Planta de fabricación: máquinas que tienen que detectar errores de fabricación necesitan una respuesta rápida.
Hospital: los tiempos en los hospitales son críticos, ya que ante una detección de algún síntoma grave, los tiempos de reacción son muy valiosos.
Ciudades inteligentes: para determinados aspectos críticos como semáforos que interactúan entre sí o control de accesos.
El Fog Computing es una estructur descentralizada. En el Fog Computing, el almacenamiento y el procesamiento de datos se distribuye entre la fuente de datos y la nube, beneficiándose de una menor latencia y carga de datos.
Ejemplos:
Agricultura inteligente: pudiéndose monitorizar el crecimiento de plantas, humedad del campo...
Redes eléctricas inteligentes: para balancear las cargas eléctricas según las necesidades.
Comercios y stocks: para monitorizar estantes, compras online...
Gestión del agua.

La principal diferencia técnica entre ambas está en el lugar en el que finalmente se hace el procesamiento. La computación en la niebla desplaza la inteligencia de validación de datos a la red local, mientras que la computación en el extremo lo hace en los propios dispositivos.

En el ámbito de servicios móviles, actualmente se está trabajando en arquitecturas de edge computing intentando sacar el máximo partido de la tecnología 5G, colocando nodos de procesamiento y almacenamiento conectados en la red de acceso a radio.
El concepto de smart city ejerce una gran atracción, fundamentalmente porque en él convergen otras grandes tecnologías del momento: IoT, e-Mobility, Data Science, etc.
Smart city se ocupa de las distintas técnicas que pueden usar las ciudades para realizar su transformación digital, con el fin de llegar a ser más acogedoras, más eficientes, más respetuosas con el medio ambiente, más centradas en el ciudadano, y como consecuencia de todo ello, más competitivas.
Una de las partes mas importantes en una smart city es la colaboración ciudadana, permitiendo a los ciudadanos ofrecer un feedback continuo de la ciudad.

Un asunto relevante, que se está aún debatiendo es hasta qué punto se deben extraer y procesar datos. Las cuestiones de la privacidad y soberanía de los datos se deben abordar cuidadosamente.
En efecto, puede haber pérdida de control para los ciudadanos de una smart city si la tecnología hace posible que distintas cámaras y dispositivos puedan seguir sus pasos vayan donde vayan, y si los algoritmos influencian su vida diaria.
Una smart city puede, como casi todas las tecnologías, gestionarse para bien o para mal, pudiéndose usar potencialmente para propósitos de vigilancia masiva de la ciudadanía.
Un gemelo digital es una réplica digital de un producto, proceso o sistema físico, que gracias a información que se obtiene a partir de sensores proporciona Información precisa sobre sus elementos.
Un gemelo digital es una réplica actualizada y exacta de todos los elementos de un objeto físico permitiendo realizar simulaciones de diferentes procesos.
Esta simbiosis del mundo físico con el virtual hace posible tanto la aplicación de analítica de datos como de monitorización, con el objetivo de:
Anticiparse a posibles problemas o anomalías operativas antes de que lleguen a producirse.
Realizar pruebas de posibles modificaciones para ofrecer productos nuevos.
Simular el funcionamiento tras ajustes personalizados a petición de los clientes.
Los gemelos digitales aglutinan diversas tecnologías, como inteligencia artificial, aprendizaje automático, analítica predictiva y telemetría de sensores.
Un proyecto es un esfuerzo temporal emprendido para crear un único producto o servicio.
La gestión de proyectos es la aplicación de conocimientos, habilidades, herramientas y técnicas para proyectar actividades destinadas a satisfacer las necesidades y expectativas de los interesados de un proyecto.
En un proyecto de loT, el software es el producto más habitual que un proyecto de estas características genera. Por supuesto, el software viene acompañado de hardware con sensores o actuadores que ejecutan las órdenes emitidas por el software.
El ciclo de vida de un producto software es la evolución del producto desde su concepción hasta su retirada.
El modelo en casada representa el proceso como una secuencia de actividades bien definidas, donde una actividad no comienza hasta que finalice su predecesora. No tiene flexibilidad, con lo que los requisitos han de estar cláramente definidos al comienzo.

El modelo en espiral consiste en iteraciones que permiten avanzar gradualmente hacia el producto final mitigando los riesgos existentes.

En el modelo iterativo e incremental se realizan versiones incrementales del producto para que el software funcional llegue cuanto antes al cliente y este pueda dar retroalimentación.

Una metodología es un conjunto de procedimientos que permiten producir y mantener un producto software. La metodología define cuáles son las fases del ciclo de vida del software de las que se va a ocupar, definiendo para cada fase las actividades, tareas, los objetivos correspondientes y los participantes involucrados en cada tarea.
Existen muchas y diversas metodologías:
METRICA 3
SSADM
RUP
XP
Las metodologías ágiles permiten adaptar la forma de trabajo a las condiciones del proyecto, intentando reducir costes e incrementar la productividad.
Entre las metodologías ágiles más aplicadas hoy en día tenemos:
En Scrum, el trabajo se divide en ciclos cortos llamados sprints, que permiten al equipo concentrarse en entregar partes específicas del proyecto de manera iterativa y incremental, mejorando continuamente el producto y el proceso. Scrum también define roles claros como el Scrum Master y el Product Owner, y eventos como las reuniones diarias y las retrospectivas para asegurar una comunicación efectiva y una mejora constante.
Kanban se basa en el uso de un tablero visual dividido en columnas que representan diferentes etapas del flujo de trabajo, como "To Do", "In Progress" y "Done". Las tareas se representan con tarjetas que se mueven a través de las columnas, lo que permite a los equipos visualizar el progreso y gestionar la carga de trabajo de manera eficiente. Esta metodología promueve la eficiencia y la mejora continua al limitar la cantidad de trabajo en proceso y al enfocarse en la entrega justa a tiempo, adaptándose a la demanda del cliente. Kanban ayuda a identificar cuellos de botella y a optimizar el flujo de trabajo, facilitando así una mejor planificación y coordinación del equipo.
Scrumban integra las prácticas de Scrum y Kanban, aprovechando la estructura de sprints, reuniones rápidas y retrospectivas de Scrum, junto con el flujo de trabajo visual y las limitaciones de trabajo en curso de Kanban. Esta fusión crea un marco híbrido que permite a los equipos ser más flexibles y responder mejor a los cambios, manteniendo al mismo tiempo una organización clara del trabajo y una mejora continua. Scrumban es especialmente útil para equipos que buscan una transición suave entre estas dos metodologías ágiles o para aquellos proyectos que requieren un enfoque adaptativo y evolutivo.
eXtreme Programming (XP) es una metodología ágil de desarrollo de software que enfatiza la eficiencia y la adaptabilidad a través de ciclos de desarrollo cortos y retroalimentación continua. Se basa en cinco valores fundamentales: comunicación, simplicidad, retroalimentación, coraje y respeto, y se rige por cinco principios y doce prácticas que incluyen programación en parejas, desarrollo dirigido por pruebas y diseño simple. XP busca mejorar la calidad del software y la capacidad de respuesta a los cambios en los requisitos del cliente, promoviendo un enfoque disciplinado y colaborativo en el equipo de desarrollo.
Uno de los mayores retos para el director de proyectos en cualquier ámbito es estimar las tres principales líneas base del proyecto:
Alcance: detallando las funcionalidades a alcanzar y los servicios a ofrecer.
Tiempo: estimar el marco temporal que guiará el proyecto.
Coste: estimar los costes que ocasionará el proyecto. Implica estimar recursos teniendo en cuenta todos los objetivos del trabajo.
Mientras que las metodologías tradicionales dejan el alcance fijo y varían el tiempo y el coste, en cambio, las metodologías ágiles fijan el tiempo y el coste mientras que el alcance es variable.
